001    /*
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * Date: 4-Sep-2002
005     * Time: 1:44:25 PM
006     * To change template for new class use
007     * Code Style | Class Templates options (Tools | IDE Options).
008     */
009    package EVolve.util.unifyutils;
010    
011    import EVolve.visualization.*;
012    import java.util.*;
013    import EVolve.Scene;
014    import EVolve.exceptions.NoDataPlotException;
015    
016    public class UnifiedVisualization {
017        private ArrayList viz;
018        private int dimension;
019        private HashSet fullEntitySet;
020    
021        public UnifiedVisualization(int dimension) {
022            this.dimension = dimension;
023            viz = new ArrayList();
024            fullEntitySet = new HashSet();
025        }
026    
027        public boolean exists(Visualization visual) {
028            boolean retValue = false;
029            for (int i=0;i<viz.size();i++) {
030                if (((Visualization)viz.get(i)).getVisualizationID() == visual.getVisualizationID()) {
031                    retValue = true;
032                }
033            }
034            return retValue;
035        }
036    
037        public void addVisualization(Visualization [] visuals) {
038    
039            for (int i=0;i<visuals.length;i++) {
040                if (exists(visuals[i])) continue;
041                viz.add(viz.size(),visuals[i]);
042            }
043        }
044    
045        public void visualize() {
046            ArrayList tobeViz = new ArrayList();
047            fullEntitySet.clear();
048    
049            for (int i=0; i<viz.size(); i++) {
050                Visualization visual = (Visualization)viz.get(i);
051                AutoImage image = visual.getImage();
052                if (image == null)
053                    tobeViz.add(visual);
054            }
055    
056            if (tobeViz.size() != 0) {
057                Scene.getVisualizationManager().prepareForLinkedViz(tobeViz,0);
058                Scene.visualize();
059            }
060    
061            Unification.getUnifiedEntity(fullEntitySet,viz,dimension);
062    
063            for (int i = 0; i< viz.size(); i++) {
064                Visualization visual = (Visualization)viz.get(i);
065                ReferenceDimension dim = visual.getLinkableDimension(dimension);
066                dim.linkEntities(fullEntitySet);
067                try {
068                    dim.visualize();
069                } catch (NoDataPlotException e) {
070                    Scene.showErrorMessage(e.getMessage());
071                }
072            }
073    
074            for (int i=0; i<viz.size(); i++) {
075                ((Visualization)viz.get(i)).visualize();
076            }
077        }
078    
079        public int unregisterViz(Visualization visual) {
080            int delCount = 0;
081            for (int i=0;i<viz.size();i++) {
082                if (((Visualization)viz.get(i-delCount)).getVisualizationID() == visual.getVisualizationID()) {
083                    viz.remove(i-delCount);
084                    delCount++;
085                }
086            }
087            if (viz.size() == 1) viz.clear();
088    
089            return viz.size();
090        }
091    
092    }